<?php
/**
 * 人民币金额转大写
 * @link      http://www.phpGrace.com
 * @copyright Copyright (c) 2010-2018 phpGrace.
 * @license   http://www.phpGrace.com/license
 * @package   phpGrace/tools
 * @author    haijun liu mail:5213606@qq.com
 * @version   1.1 Beta
 */
namespace phpGrace\tools;

class extNum2Cny{

    static $basical = array(0 => "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
    static $advanced = array(1 => "拾", "佰", "仟");

    public static function ParseNumber($number){
        $number = trim($number);
        if ($number > 999999999999) {
            return "数字太大，无法处理。抱歉！";
        }
        if ($number == 0) {
            return "零";
        }
        if (strpos($number, '.')) {
            $number = round($number, 2);
            $data = explode(".", $number);
            $data[0] = self::int($data[0]);
            $data[1] = self::dec($data[1]);
            return $data[0] . $data[1];
        } else {
            return self::int($number) . '整';
        }
    }

    public static function int($number){
        $arr = array_reverse(str_split($number));
        $data = '';
        $zero = false;
        $zero_num = 0;
        foreach ($arr as $k => $v) {
            $_chinese = '';
            $zero = $v == 0 ? true : false;
            $x = $k % 4;
            if ($x && $zero && $zero_num > 1) {continue;}
            switch ($x) {
                case 0:
                    if ($zero) {
                        $zero_num = 0;
                    } else {
                        $_chinese = self::$basical[$v];
                        $zero_num = 1;
                    }
                    if ($k == 8) {
                        $_chinese .= '亿';
                    } elseif ($k == 4) {
                        $_chinese .= '万';
                    }
                    break;
                default:
                    if ($zero) {
                        if ($zero_num == 1) {
                            $_chinese = self::$basical[$v];
                            $zero_num++;
                        }
                    } else {
                        $_chinese = self::$basical[$v];
                        $_chinese .= self::$advanced[$x];
                    }
            }
            $data = $_chinese . $data;
        }
        return $data . '元';
    }


    public static function dec($number){
        if (strlen($number) < 2) {$number .= '0';}
        $arr = array_reverse(str_split($number));
        $data = '';
        $zero_num = false;
        foreach ($arr as $k => $v) {
            $zero = $v == 0 ? true : false;
            $_chinese = '';
            if ($k == 0) {
                if (!$zero) {
                    $_chinese = self::$basical[$v];
                    $_chinese .= '分';
                    $zero_num = true;
                }
            } else {
                if ($zero) {
                    if ($zero_num) {
                        $_chinese = self::$basical[$v];
                    }
                } else {
                    $_chinese = self::$basical[$v];
                    $_chinese .= '角';
                }
            }
            $data = $_chinese . $data;
        }
        return $data;
    }
}